package leetcode.array;

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

/**
 * leetCode 11
 * Container With Most Water
 * 最大水容器
 * 翻译：给定n个非负整数a1,a2,...,an，其中每个代表一个点坐标（i,ai）。 n个垂直线段例如线段的两个端点在（i,ai）和（i,0）。 找到两个线段，与x轴形成一个容器，使其包含最多的水。
 * 思路：使用双指针two pointers。 定义left，right两个指针，两指针相遇循环结束。何时移动左右指针呢，保留较高的柱子，移动较矮的柱子。

 */
public class Array11 {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        //利用hasNextXXX()判断是否还有下一输入项
        while (sc.hasNext()) {
            //利用nextXXX()方法输出内容
            String str = sc.next();
            List<Integer> input = Arrays.stream(str.split(",")).map(i -> { return Integer.parseInt(i); }).collect(Collectors.toList());
            System.out.println(Arrays.toString(input.toArray()));
            Integer [] height = input.toArray(new Integer[input.size()]);
            new Array11().maxArea(height);
        }
    }
    public int maxArea(Integer[] height) {
        int max = 0;
        int i=0,j = height.length - 1;
        while(i < j){
            int area = (j - i) * Math.min(height[i], height[j]);
            if (area > max){
                max = area;
            }
            if ( height[i] > height[j]) j--;
            else i++;
        }
        return max;
    }
}
